#include <iostream>
#include <vector>
#include <list>

using namespace std;

template
<
    typename S
>
struct Y;

template
<
    typename S
>
struct Y<vector<S> > { void foo() { cout << "vector"<< endl; } };

template
<
    typename S
>
struct Y<list<S> > { void foo() { cout << "list"<< endl; } };

int main()
{
    Y<list<double> > ylist;
    Y<vector<int> > yvector;
    
    ylist.foo();
    yvector.foo();
}
